#ifndef __POKEMON_H__
# define __POKEMON_H__

#include <iostream>
#include <list>
#include <map>
#include <string>
#include <QString>

class								Pokemon
{
 private:
  QString							id;
  QString							name;
  std::list<QString>						type;
  QString							ability;
  QString							exp;
  std::map<QString, QString>					stats;
  std::map<QString, std::pair<QString, QString> >		evolution;
  std::map<QString, QString>					ratio;
  std::list<QString>						egg_group;
  QString							species;
  QString							height;
  QString							weight;
  QString							description;
  std::map<QString, QString>					lvlup;
  std::map<QString, QString>					TM;
  std::map<QString, QString>					HM;
  std::list<QString>						egg;
  typedef void	(Pokemon::*f)(QString);
  std::map<QString, f>						ptrmap;

 public:
  Pokemon();
  Pokemon(const QString &);
  ~Pokemon();
  void setCar(const QString &node, const QString &content);

  // GETTEUR

  QString      						getId() const;
  QString	      					getName() const;
  std::list<QString>					getType() const;
  QString						getAbility() const;
  QString						getExp() const;
  std::map<QString, QString>				getStats() const;
  std::map<QString, std::pair<QString, QString> >	getEvolution() const;
  std::map<QString, QString>				getRatio() const;
  std::list<QString>					getEgg_group() const;
  QString						getSpecies() const;
  QString		      				getHeight() const;
  QString	       					getWeight() const;
  QString	      					getDescription() const;
  std::map<QString, QString>				getLvlup() const;
  std::map<QString, QString>				getTM() const;
  std::map<QString, QString>				getHM() const;
  std::list<QString>					getEgg() const;

  // SETTEUR

  void	setId(const QString);
  void	setName(const QString);
  void	setType(const QString);
  void	setAbility(const QString);
  void	setExp(const QString);
  void	setStats(const QString, const QString);
  void	setEvolution(const QString, std::pair<QString, QString>);
  void	setRatio(const QString, const QString);
  void	setEgg_group(const QString);
  void	setSpecies(const QString);
  void	setHeight(const QString);
  void	setWeight(const QString);
  void	setDescription(const QString);
  void	setLvlup(const QString, const QString);
  void	setTM(const QString, const QString);
  void	setHM(const QString, const QString);
  void	setEgg(const QString);
};

#endif /*__POKEMON_H__*/
